<!DOCTYPE html>

<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">

<title>class ActiveRecord::Migration - Rails Framework Documentation</title>

<link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet">

<script type="text/javascript">
  var rdoc_rel_prefix = "../";
</script>

<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/navigation.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/search_index.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/search.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/searcher.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/darkfish.js"></script>


<body id="top" class="class">
<nav id="metadata">
  <nav id="home-section" class="section">
  <h3 class="section-header">
    <a href="../index.html">Home</a>
    <a href="../table_of_contents.html#classes">Classes</a>
    <a href="../table_of_contents.html#methods">Methods</a>
  </h3>
</nav>


  <nav id="search-section" class="section project-section" class="initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <h3 class="section-header">
      <input type="text" name="search" placeholder="Search" id="search-field"
             title="Type to search, Up and Down to navigate, Enter to load">
    </h3>
  </form>

  <ul id="search-results" class="initially-hidden"></ul>
</nav>


  <div id="file-metadata">
    <nav id="file-list-section" class="section">
  <h3 class="section-header">Defined In</h3>
  <ul>
    <li>/usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb
    <li>/usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration/command_recorder.rb
  </ul>
</nav>

    
  </div>

  <div id="class-metadata">
    
    <nav id="parent-class-section" class="section">
  <h3 class="section-header">Parent</h3>
  
  <p class="link"><a href="../Object.html">Object</a>
  
</nav>

    
    <!-- Method Quickref -->
<nav id="method-list-section" class="section">
  <h3 class="section-header">Methods</h3>

  <ul class="link-list">
    
    <li><a href="#method-c-migrate">::migrate</a>
    
    <li><a href="#method-c-new">::new</a>
    
    <li><a href="#method-i-announce">#announce</a>
    
    <li><a href="#method-i-connection">#connection</a>
    
    <li><a href="#method-i-copy">#copy</a>
    
    <li><a href="#method-i-down">#down</a>
    
    <li><a href="#method-i-method_missing">#method_missing</a>
    
    <li><a href="#method-i-migrate">#migrate</a>
    
    <li><a href="#method-i-next_migration_number">#next_migration_number</a>
    
    <li><a href="#method-i-revert">#revert</a>
    
    <li><a href="#method-i-reverting-3F">#reverting?</a>
    
    <li><a href="#method-i-say">#say</a>
    
    <li><a href="#method-i-say_with_time">#say_with_time</a>
    
    <li><a href="#method-i-suppress_messages">#suppress_messages</a>
    
    <li><a href="#method-i-up">#up</a>
    
    <li><a href="#method-i-write">#write</a>
    
  </ul>
</nav>

  </div>

  <div id="project-metadata">
    <nav id="fileindex-section" class="section project-section">
  <h3 class="section-header">Pages</h3>

  <ul>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/actionmailer-3_2_7/MIT-LICENSE.html">MIT-LICENSE</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/actionmailer-3_2_7/README_rdoc.html">README</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/actionpack-3_2_7/MIT-LICENSE.html">MIT-LICENSE</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/actionpack-3_2_7/README_rdoc.html">README</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/activemodel-3_2_7/MIT-LICENSE.html">MIT-LICENSE</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/activemodel-3_2_7/README_rdoc.html">README</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/activerecord-3_2_7/README_rdoc.html">README</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/activeresource-3_2_7/README_rdoc.html">README</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/activesupport-3_2_7/README_rdoc.html">README</a>
  
    <li class="file"><a href="..//usr/local/lib/ruby/gems/1_9_1/gems/railties-3_2_7/README_rdoc.html">README</a>
  
    <li class="file"><a href="../README_rdoc.html">README</a>
  
  </ul>
</nav>

    <nav id="classindex-section" class="section project-section">
  <h3 class="section-header">Class and Module Index</h3>

  <ul class="link-list">
  
    <li><a href="../ActiveRecord.html">ActiveRecord</a>
  
    <li><a href="../ActiveRecord/ActiveRecordError.html">ActiveRecord::ActiveRecordError</a>
  
    <li><a href="../ActiveRecord/AdapterNotFound.html">ActiveRecord::AdapterNotFound</a>
  
    <li><a href="../ActiveRecord/AdapterNotSpecified.html">ActiveRecord::AdapterNotSpecified</a>
  
    <li><a href="../ActiveRecord/Aggregations.html">ActiveRecord::Aggregations</a>
  
    <li><a href="../ActiveRecord/Aggregations/ClassMethods.html">ActiveRecord::Aggregations::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AssociationTypeMismatch.html">ActiveRecord::AssociationTypeMismatch</a>
  
    <li><a href="../ActiveRecord/Associations.html">ActiveRecord::Associations</a>
  
    <li><a href="../ActiveRecord/Associations/ClassMethods.html">ActiveRecord::Associations::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeAssignment.html">ActiveRecord::AttributeAssignment</a>
  
    <li><a href="../ActiveRecord/AttributeAssignment/ClassMethods.html">ActiveRecord::AttributeAssignment::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeAssignmentError.html">ActiveRecord::AttributeAssignmentError</a>
  
    <li><a href="../ActiveRecord/AttributeMethods.html">ActiveRecord::AttributeMethods</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/BeforeTypeCast.html">ActiveRecord::AttributeMethods::BeforeTypeCast</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/ClassMethods.html">ActiveRecord::AttributeMethods::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/DeprecatedUnderscoreRead.html">ActiveRecord::AttributeMethods::DeprecatedUnderscoreRead</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/DeprecatedUnderscoreRead/ClassMethods.html">ActiveRecord::AttributeMethods::DeprecatedUnderscoreRead::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Dirty.html">ActiveRecord::AttributeMethods::Dirty</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/PrimaryKey.html">ActiveRecord::AttributeMethods::PrimaryKey</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/PrimaryKey/ClassMethods.html">ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Query.html">ActiveRecord::AttributeMethods::Query</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Read.html">ActiveRecord::AttributeMethods::Read</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Read/ClassMethods.html">ActiveRecord::AttributeMethods::Read::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Serialization.html">ActiveRecord::AttributeMethods::Serialization</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Serialization/Attribute.html">ActiveRecord::AttributeMethods::Serialization::Attribute</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Serialization/ClassMethods.html">ActiveRecord::AttributeMethods::Serialization::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/TimeZoneConversion.html">ActiveRecord::AttributeMethods::TimeZoneConversion</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/TimeZoneConversion/ClassMethods.html">ActiveRecord::AttributeMethods::TimeZoneConversion::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Write.html">ActiveRecord::AttributeMethods::Write</a>
  
    <li><a href="../ActiveRecord/AttributeMethods/Write/ClassMethods.html">ActiveRecord::AttributeMethods::Write::ClassMethods</a>
  
    <li><a href="../ActiveRecord/AutosaveAssociation.html">ActiveRecord::AutosaveAssociation</a>
  
    <li><a href="../ActiveRecord/AutosaveAssociation/ClassMethods.html">ActiveRecord::AutosaveAssociation::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Base.html">ActiveRecord::Base</a>
  
    <li><a href="../ActiveRecord/Batches.html">ActiveRecord::Batches</a>
  
    <li><a href="../ActiveRecord/Calculations.html">ActiveRecord::Calculations</a>
  
    <li><a href="../ActiveRecord/Callbacks.html">ActiveRecord::Callbacks</a>
  
    <li><a href="../ActiveRecord/ConfigurationError.html">ActiveRecord::ConfigurationError</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/AbstractAdapter.html">ActiveRecord::ConnectionAdapters::AbstractAdapter</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/AbstractMysqlAdapter.html">ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/ConnectionHandler.html">ActiveRecord::ConnectionAdapters::ConnectionHandler</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/ConnectionManagement.html">ActiveRecord::ConnectionAdapters::ConnectionManagement</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/ConnectionPool.html">ActiveRecord::ConnectionAdapters::ConnectionPool</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/DatabaseLimits.html">ActiveRecord::ConnectionAdapters::DatabaseLimits</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/DatabaseStatements.html">ActiveRecord::ConnectionAdapters::DatabaseStatements</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/Mysql2Adapter.html">ActiveRecord::ConnectionAdapters::Mysql2Adapter</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/MysqlAdapter.html">ActiveRecord::ConnectionAdapters::MysqlAdapter</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/MysqlAdapter/StatementPool.html">ActiveRecord::ConnectionAdapters::MysqlAdapter::StatementPool</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/PostgreSQLAdapter.html">ActiveRecord::ConnectionAdapters::PostgreSQLAdapter</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/PostgreSQLAdapter/StatementPool.html">ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::StatementPool</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/PostgreSQLAdapter/TableDefinition.html">ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/PostgreSQLAdapter/Utils.html">ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::Utils</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/PostgreSQLColumn.html">ActiveRecord::ConnectionAdapters::PostgreSQLColumn</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/QueryCache.html">ActiveRecord::ConnectionAdapters::QueryCache</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/Quoting.html">ActiveRecord::ConnectionAdapters::Quoting</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/SQLiteAdapter.html">ActiveRecord::ConnectionAdapters::SQLiteAdapter</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/SQLiteAdapter/ExplainPrettyPrinter.html">ActiveRecord::ConnectionAdapters::SQLiteAdapter::ExplainPrettyPrinter</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/SQLiteAdapter/StatementPool.html">ActiveRecord::ConnectionAdapters::SQLiteAdapter::StatementPool</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/SQLiteAdapter/Version.html">ActiveRecord::ConnectionAdapters::SQLiteAdapter::Version</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/SchemaCache.html">ActiveRecord::ConnectionAdapters::SchemaCache</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/SchemaStatements.html">ActiveRecord::ConnectionAdapters::SchemaStatements</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/StatementPool.html">ActiveRecord::ConnectionAdapters::StatementPool</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/Table.html">ActiveRecord::ConnectionAdapters::Table</a>
  
    <li><a href="../ActiveRecord/ConnectionAdapters/TableDefinition.html">ActiveRecord::ConnectionAdapters::TableDefinition</a>
  
    <li><a href="../ActiveRecord/ConnectionNotEstablished.html">ActiveRecord::ConnectionNotEstablished</a>
  
    <li><a href="../ActiveRecord/ConnectionTimeoutError.html">ActiveRecord::ConnectionTimeoutError</a>
  
    <li><a href="../ActiveRecord/CounterCache.html">ActiveRecord::CounterCache</a>
  
    <li><a href="../ActiveRecord/DangerousAttributeError.html">ActiveRecord::DangerousAttributeError</a>
  
    <li><a href="../ActiveRecord/Delegation.html">ActiveRecord::Delegation</a>
  
    <li><a href="../ActiveRecord/DynamicFinderMatch.html">ActiveRecord::DynamicFinderMatch</a>
  
    <li><a href="../ActiveRecord/DynamicMatchers.html">ActiveRecord::DynamicMatchers</a>
  
    <li><a href="../ActiveRecord/DynamicScopeMatch.html">ActiveRecord::DynamicScopeMatch</a>
  
    <li><a href="../ActiveRecord/Explain.html">ActiveRecord::Explain</a>
  
    <li><a href="../ActiveRecord/FinderMethods.html">ActiveRecord::FinderMethods</a>
  
    <li><a href="../ActiveRecord/Fixtures.html">ActiveRecord::Fixtures</a>
  
    <li><a href="../ActiveRecord/Fixtures/File.html">ActiveRecord::Fixtures::File</a>
  
    <li><a href="../ActiveRecord/IdentityMap.html">ActiveRecord::IdentityMap</a>
  
    <li><a href="../ActiveRecord/IdentityMap/Middleware.html">ActiveRecord::IdentityMap::Middleware</a>
  
    <li><a href="../ActiveRecord/Inheritance.html">ActiveRecord::Inheritance</a>
  
    <li><a href="../ActiveRecord/Inheritance/ClassMethods.html">ActiveRecord::Inheritance::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Integration.html">ActiveRecord::Integration</a>
  
    <li><a href="../ActiveRecord/InvalidForeignKey.html">ActiveRecord::InvalidForeignKey</a>
  
    <li><a href="../ActiveRecord/IrreversibleMigration.html">ActiveRecord::IrreversibleMigration</a>
  
    <li><a href="../ActiveRecord/Locking.html">ActiveRecord::Locking</a>
  
    <li><a href="../ActiveRecord/Locking/Optimistic.html">ActiveRecord::Locking::Optimistic</a>
  
    <li><a href="../ActiveRecord/Locking/Optimistic/ClassMethods.html">ActiveRecord::Locking::Optimistic::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Locking/Pessimistic.html">ActiveRecord::Locking::Pessimistic</a>
  
    <li><a href="../ActiveRecord/LogSubscriber.html">ActiveRecord::LogSubscriber</a>
  
    <li><a href="../ActiveRecord/Migration.html">ActiveRecord::Migration</a>
  
    <li><a href="../ActiveRecord/Migration/CommandRecorder.html">ActiveRecord::Migration::CommandRecorder</a>
  
    <li><a href="../ActiveRecord/MigrationProxy.html">ActiveRecord::MigrationProxy</a>
  
    <li><a href="../ActiveRecord/ModelSchema.html">ActiveRecord::ModelSchema</a>
  
    <li><a href="../ActiveRecord/ModelSchema/ClassMethods.html">ActiveRecord::ModelSchema::ClassMethods</a>
  
    <li><a href="../ActiveRecord/MultiparameterAssignmentErrors.html">ActiveRecord::MultiparameterAssignmentErrors</a>
  
    <li><a href="../ActiveRecord/NestedAttributes.html">ActiveRecord::NestedAttributes</a>
  
    <li><a href="../ActiveRecord/NestedAttributes/ClassMethods.html">ActiveRecord::NestedAttributes::ClassMethods</a>
  
    <li><a href="../ActiveRecord/NestedAttributes/TooManyRecords.html">ActiveRecord::NestedAttributes::TooManyRecords</a>
  
    <li><a href="../ActiveRecord/Observer.html">ActiveRecord::Observer</a>
  
    <li><a href="../ActiveRecord/Persistence.html">ActiveRecord::Persistence</a>
  
    <li><a href="../ActiveRecord/Persistence/ClassMethods.html">ActiveRecord::Persistence::ClassMethods</a>
  
    <li><a href="../ActiveRecord/PreparedStatementInvalid.html">ActiveRecord::PreparedStatementInvalid</a>
  
    <li><a href="../ActiveRecord/QueryCache.html">ActiveRecord::QueryCache</a>
  
    <li><a href="../ActiveRecord/QueryCache/ClassMethods.html">ActiveRecord::QueryCache::ClassMethods</a>
  
    <li><a href="../ActiveRecord/QueryMethods.html">ActiveRecord::QueryMethods</a>
  
    <li><a href="../ActiveRecord/Querying.html">ActiveRecord::Querying</a>
  
    <li><a href="../ActiveRecord/Railtie.html">ActiveRecord::Railtie</a>
  
    <li><a href="../ActiveRecord/Railties.html">ActiveRecord::Railties</a>
  
    <li><a href="../ActiveRecord/Railties/ControllerRuntime.html">ActiveRecord::Railties::ControllerRuntime</a>
  
    <li><a href="../ActiveRecord/Railties/ControllerRuntime/ClassMethods.html">ActiveRecord::Railties::ControllerRuntime::ClassMethods</a>
  
    <li><a href="../ActiveRecord/ReadOnlyRecord.html">ActiveRecord::ReadOnlyRecord</a>
  
    <li><a href="../ActiveRecord/ReadonlyAttributes.html">ActiveRecord::ReadonlyAttributes</a>
  
    <li><a href="../ActiveRecord/ReadonlyAttributes/ClassMethods.html">ActiveRecord::ReadonlyAttributes::ClassMethods</a>
  
    <li><a href="../ActiveRecord/RecordInvalid.html">ActiveRecord::RecordInvalid</a>
  
    <li><a href="../ActiveRecord/RecordNotFound.html">ActiveRecord::RecordNotFound</a>
  
    <li><a href="../ActiveRecord/RecordNotSaved.html">ActiveRecord::RecordNotSaved</a>
  
    <li><a href="../ActiveRecord/RecordNotUnique.html">ActiveRecord::RecordNotUnique</a>
  
    <li><a href="../ActiveRecord/Reflection.html">ActiveRecord::Reflection</a>
  
    <li><a href="../ActiveRecord/Reflection/ClassMethods.html">ActiveRecord::Reflection::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Reflection/MacroReflection.html">ActiveRecord::Reflection::MacroReflection</a>
  
    <li><a href="../ActiveRecord/Relation.html">ActiveRecord::Relation</a>
  
    <li><a href="../ActiveRecord/Result.html">ActiveRecord::Result</a>
  
    <li><a href="../ActiveRecord/Rollback.html">ActiveRecord::Rollback</a>
  
    <li><a href="../ActiveRecord/Sanitization.html">ActiveRecord::Sanitization</a>
  
    <li><a href="../ActiveRecord/Sanitization/ClassMethods.html">ActiveRecord::Sanitization::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Schema.html">ActiveRecord::Schema</a>
  
    <li><a href="../ActiveRecord/Scoping.html">ActiveRecord::Scoping</a>
  
    <li><a href="../ActiveRecord/Scoping/ClassMethods.html">ActiveRecord::Scoping::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Scoping/Default.html">ActiveRecord::Scoping::Default</a>
  
    <li><a href="../ActiveRecord/Scoping/Default/ClassMethods.html">ActiveRecord::Scoping::Default::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Scoping/Named.html">ActiveRecord::Scoping::Named</a>
  
    <li><a href="../ActiveRecord/Scoping/Named/ClassMethods.html">ActiveRecord::Scoping::Named::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Serialization.html">ActiveRecord::Serialization</a>
  
    <li><a href="../ActiveRecord/SerializationTypeMismatch.html">ActiveRecord::SerializationTypeMismatch</a>
  
    <li><a href="../ActiveRecord/SessionStore.html">ActiveRecord::SessionStore</a>
  
    <li><a href="../ActiveRecord/SessionStore/Session.html">ActiveRecord::SessionStore::Session</a>
  
    <li><a href="../ActiveRecord/SessionStore/SqlBypass.html">ActiveRecord::SessionStore::SqlBypass</a>
  
    <li><a href="../ActiveRecord/SpawnMethods.html">ActiveRecord::SpawnMethods</a>
  
    <li><a href="../ActiveRecord/StaleObjectError.html">ActiveRecord::StaleObjectError</a>
  
    <li><a href="../ActiveRecord/StatementInvalid.html">ActiveRecord::StatementInvalid</a>
  
    <li><a href="../ActiveRecord/Store.html">ActiveRecord::Store</a>
  
    <li><a href="../ActiveRecord/Store/ClassMethods.html">ActiveRecord::Store::ClassMethods</a>
  
    <li><a href="../ActiveRecord/TestFixtures.html">ActiveRecord::TestFixtures</a>
  
    <li><a href="../ActiveRecord/TestFixtures/ClassMethods.html">ActiveRecord::TestFixtures::ClassMethods</a>
  
    <li><a href="../ActiveRecord/ThrowResult.html">ActiveRecord::ThrowResult</a>
  
    <li><a href="../ActiveRecord/Timestamp.html">ActiveRecord::Timestamp</a>
  
    <li><a href="../ActiveRecord/Transactions.html">ActiveRecord::Transactions</a>
  
    <li><a href="../ActiveRecord/Transactions/ClassMethods.html">ActiveRecord::Transactions::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Translation.html">ActiveRecord::Translation</a>
  
    <li><a href="../ActiveRecord/UnknownAttributeError.html">ActiveRecord::UnknownAttributeError</a>
  
    <li><a href="../ActiveRecord/UnknownPrimaryKey.html">ActiveRecord::UnknownPrimaryKey</a>
  
    <li><a href="../ActiveRecord/Validations.html">ActiveRecord::Validations</a>
  
    <li><a href="../ActiveRecord/Validations/AssociatedValidator.html">ActiveRecord::Validations::AssociatedValidator</a>
  
    <li><a href="../ActiveRecord/Validations/ClassMethods.html">ActiveRecord::Validations::ClassMethods</a>
  
    <li><a href="../ActiveRecord/Validations/UniquenessValidator.html">ActiveRecord::Validations::UniquenessValidator</a>
  
    <li><a href="../ActiveRecord/WrappedDatabaseException.html">ActiveRecord::WrappedDatabaseException</a>
  
    <li><a href="../ActiveSupport.html">ActiveSupport</a>
  
    <li><a href="../ActiveSupport/Autoload.html">ActiveSupport::Autoload</a>
  
    <li><a href="../ActiveSupport/BacktraceCleaner.html">ActiveSupport::BacktraceCleaner</a>
  
    <li><a href="../ActiveSupport/Base64.html">ActiveSupport::Base64</a>
  
    <li><a href="../ActiveSupport/BasicObject.html">ActiveSupport::BasicObject</a>
  
    <li><a href="../ActiveSupport/Benchmarkable.html">ActiveSupport::Benchmarkable</a>
  
    <li><a href="../ActiveSupport/BufferedLogger.html">ActiveSupport::BufferedLogger</a>
  
    <li><a href="../ActiveSupport/BufferedLogger/Severity.html">ActiveSupport::BufferedLogger::Severity</a>
  
    <li><a href="../ActiveSupport/Cache.html">ActiveSupport::Cache</a>
  
    <li><a href="../ActiveSupport/Cache/Entry.html">ActiveSupport::Cache::Entry</a>
  
    <li><a href="../ActiveSupport/Cache/FileStore.html">ActiveSupport::Cache::FileStore</a>
  
    <li><a href="../ActiveSupport/Cache/MemCacheStore.html">ActiveSupport::Cache::MemCacheStore</a>
  
    <li><a href="../ActiveSupport/Cache/MemoryStore.html">ActiveSupport::Cache::MemoryStore</a>
  
    <li><a href="../ActiveSupport/Cache/NullStore.html">ActiveSupport::Cache::NullStore</a>
  
    <li><a href="../ActiveSupport/Cache/Store.html">ActiveSupport::Cache::Store</a>
  
    <li><a href="../ActiveSupport/Cache/Strategy.html">ActiveSupport::Cache::Strategy</a>
  
    <li><a href="../ActiveSupport/Cache/Strategy/LocalCache.html">ActiveSupport::Cache::Strategy::LocalCache</a>
  
    <li><a href="../ActiveSupport/Cache/Strategy/LocalCache/LocalStore.html">ActiveSupport::Cache::Strategy::LocalCache::LocalStore</a>
  
    <li><a href="../ActiveSupport/Callbacks.html">ActiveSupport::Callbacks</a>
  
    <li><a href="../ActiveSupport/Callbacks/ClassMethods.html">ActiveSupport::Callbacks::ClassMethods</a>
  
    <li><a href="../ActiveSupport/Concern.html">ActiveSupport::Concern</a>
  
    <li><a href="../ActiveSupport/Configurable.html">ActiveSupport::Configurable</a>
  
    <li><a href="../ActiveSupport/Configurable/ClassMethods.html">ActiveSupport::Configurable::ClassMethods</a>
  
    <li><a href="../ActiveSupport/Configurable/Configuration.html">ActiveSupport::Configurable::Configuration</a>
  
    <li><a href="../ActiveSupport/Dependencies.html">ActiveSupport::Dependencies</a>
  
    <li><a href="../ActiveSupport/Dependencies/ClassCache.html">ActiveSupport::Dependencies::ClassCache</a>
  
    <li><a href="../ActiveSupport/Dependencies/WatchStack.html">ActiveSupport::Dependencies::WatchStack</a>
  
    <li><a href="../ActiveSupport/Deprecation.html">ActiveSupport::Deprecation</a>
  
    <li><a href="../ActiveSupport/DescendantsTracker.html">ActiveSupport::DescendantsTracker</a>
  
    <li><a href="../ActiveSupport/Duration.html">ActiveSupport::Duration</a>
  
    <li><a href="../ActiveSupport/FileUpdateChecker.html">ActiveSupport::FileUpdateChecker</a>
  
    <li><a href="../ActiveSupport/FileWatcher.html">ActiveSupport::FileWatcher</a>
  
    <li><a href="../ActiveSupport/FileWatcher/Backend.html">ActiveSupport::FileWatcher::Backend</a>
  
    <li><a href="../ActiveSupport/Gzip.html">ActiveSupport::Gzip</a>
  
    <li><a href="../ActiveSupport/Gzip/Stream.html">ActiveSupport::Gzip::Stream</a>
  
    <li><a href="../ActiveSupport/HashWithIndifferentAccess.html">ActiveSupport::HashWithIndifferentAccess</a>
  
    <li><a href="../ActiveSupport/HashWithIndifferentAccess.html">ActiveSupport::HashWithIndifferentAccess</a>
  
    <li><a href="../ActiveSupport/Inflector.html">ActiveSupport::Inflector</a>
  
    <li><a href="../ActiveSupport/Inflector/Inflections.html">ActiveSupport::Inflector::Inflections</a>
  
    <li><a href="../ActiveSupport/InheritableOptions.html">ActiveSupport::InheritableOptions</a>
  
    <li><a href="../ActiveSupport/JSON.html">ActiveSupport::JSON</a>
  
    <li><a href="../ActiveSupport/JSON/Encoding.html">ActiveSupport::JSON::Encoding</a>
  
    <li><a href="../ActiveSupport/JSON/Encoding/CircularReferenceError.html">ActiveSupport::JSON::Encoding::CircularReferenceError</a>
  
    <li><a href="../ActiveSupport/JSON/Encoding/Encoder.html">ActiveSupport::JSON::Encoding::Encoder</a>
  
    <li><a href="../ActiveSupport/JSON/Variable.html">ActiveSupport::JSON::Variable</a>
  
    <li><a href="../ActiveSupport/LogSubscriber.html">ActiveSupport::LogSubscriber</a>
  
    <li><a href="../ActiveSupport/LogSubscriber/TestHelper.html">ActiveSupport::LogSubscriber::TestHelper</a>
  
    <li><a href="../ActiveSupport/LogSubscriber/TestHelper/MockLogger.html">ActiveSupport::LogSubscriber::TestHelper::MockLogger</a>
  
    <li><a href="../ActiveSupport/Memoizable.html">ActiveSupport::Memoizable</a>
  
    <li><a href="../ActiveSupport/Memoizable/InstanceMethods.html">ActiveSupport::Memoizable::InstanceMethods</a>
  
    <li><a href="../ActiveSupport/MessageEncryptor.html">ActiveSupport::MessageEncryptor</a>
  
    <li><a href="../ActiveSupport/MessageEncryptor/InvalidMessage.html">ActiveSupport::MessageEncryptor::InvalidMessage</a>
  
    <li><a href="../ActiveSupport/MessageVerifier.html">ActiveSupport::MessageVerifier</a>
  
    <li><a href="../ActiveSupport/MessageVerifier/InvalidSignature.html">ActiveSupport::MessageVerifier::InvalidSignature</a>
  
    <li><a href="../ActiveSupport/Multibyte.html">ActiveSupport::Multibyte</a>
  
    <li><a href="../ActiveSupport/Multibyte/Chars.html">ActiveSupport::Multibyte::Chars</a>
  
    <li><a href="../ActiveSupport/Multibyte/EncodingError.html">ActiveSupport::Multibyte::EncodingError</a>
  
    <li><a href="../ActiveSupport/Multibyte/Unicode.html">ActiveSupport::Multibyte::Unicode</a>
  
    <li><a href="../ActiveSupport/Multibyte/Unicode/Codepoint.html">ActiveSupport::Multibyte::Unicode::Codepoint</a>
  
    <li><a href="../ActiveSupport/Multibyte/Unicode/UnicodeDatabase.html">ActiveSupport::Multibyte::Unicode::UnicodeDatabase</a>
  
    <li><a href="../ActiveSupport/Notifications.html">ActiveSupport::Notifications</a>
  
    <li><a href="../ActiveSupport/Notifications/Event.html">ActiveSupport::Notifications::Event</a>
  
    <li><a href="../ActiveSupport/Notifications/Fanout.html">ActiveSupport::Notifications::Fanout</a>
  
    <li><a href="../ActiveSupport/Notifications/Instrumenter.html">ActiveSupport::Notifications::Instrumenter</a>
  
    <li><a href="../ActiveSupport/OrderedHash.html">ActiveSupport::OrderedHash</a>
  
    <li><a href="../ActiveSupport/OrderedOptions.html">ActiveSupport::OrderedOptions</a>
  
    <li><a href="../ActiveSupport/Railtie.html">ActiveSupport::Railtie</a>
  
    <li><a href="../ActiveSupport/Rescuable.html">ActiveSupport::Rescuable</a>
  
    <li><a href="../ActiveSupport/Rescuable/ClassMethods.html">ActiveSupport::Rescuable::ClassMethods</a>
  
    <li><a href="../ActiveSupport/SafeBuffer.html">ActiveSupport::SafeBuffer</a>
  
    <li><a href="../ActiveSupport/SafeBuffer/SafeConcatError.html">ActiveSupport::SafeBuffer::SafeConcatError</a>
  
    <li><a href="../ActiveSupport/StringInquirer.html">ActiveSupport::StringInquirer</a>
  
    <li><a href="../ActiveSupport/TaggedLogging.html">ActiveSupport::TaggedLogging</a>
  
    <li><a href="../ActiveSupport/TestCase.html">ActiveSupport::TestCase</a>
  
    <li><a href="../ActiveSupport/Testing.html">ActiveSupport::Testing</a>
  
    <li><a href="../ActiveSupport/Testing/Assertions.html">ActiveSupport::Testing::Assertions</a>
  
    <li><a href="../ActiveSupport/Testing/Declarative.html">ActiveSupport::Testing::Declarative</a>
  
    <li><a href="../ActiveSupport/Testing/Isolation.html">ActiveSupport::Testing::Isolation</a>
  
    <li><a href="../ActiveSupport/Testing/Isolation/Forking.html">ActiveSupport::Testing::Isolation::Forking</a>
  
    <li><a href="../ActiveSupport/Testing/Isolation/MiniTest.html">ActiveSupport::Testing::Isolation::MiniTest</a>
  
    <li><a href="../ActiveSupport/Testing/Isolation/Subprocess.html">ActiveSupport::Testing::Isolation::Subprocess</a>
  
    <li><a href="../ActiveSupport/Testing/Isolation/TestUnit.html">ActiveSupport::Testing::Isolation::TestUnit</a>
  
    <li><a href="../ActiveSupport/Testing/Pending.html">ActiveSupport::Testing::Pending</a>
  
    <li><a href="../ActiveSupport/Testing/Performance.html">ActiveSupport::Testing::Performance</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Benchmarker.html">ActiveSupport::Testing::Performance::Benchmarker</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/ForClassicTestUnit.html">ActiveSupport::Testing::Performance::ForClassicTestUnit</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/ForMiniTest.html">ActiveSupport::Testing::Performance::ForMiniTest</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics.html">ActiveSupport::Testing::Performance::Metrics</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/Amount.html">ActiveSupport::Testing::Performance::Metrics::Amount</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/Base.html">ActiveSupport::Testing::Performance::Metrics::Base</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/CpuTime.html">ActiveSupport::Testing::Performance::Metrics::CpuTime</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/DigitalInformationUnit.html">ActiveSupport::Testing::Performance::Metrics::DigitalInformationUnit</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/GcRuns.html">ActiveSupport::Testing::Performance::Metrics::GcRuns</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/GcTime.html">ActiveSupport::Testing::Performance::Metrics::GcTime</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/Memory.html">ActiveSupport::Testing::Performance::Metrics::Memory</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/Objects.html">ActiveSupport::Testing::Performance::Metrics::Objects</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/ProcessTime.html">ActiveSupport::Testing::Performance::Metrics::ProcessTime</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/Time.html">ActiveSupport::Testing::Performance::Metrics::Time</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/UserTime.html">ActiveSupport::Testing::Performance::Metrics::UserTime</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Metrics/WallTime.html">ActiveSupport::Testing::Performance::Metrics::WallTime</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Performer.html">ActiveSupport::Testing::Performance::Performer</a>
  
    <li><a href="../ActiveSupport/Testing/Performance/Profiler.html">ActiveSupport::Testing::Performance::Profiler</a>
  
    <li><a href="../ActiveSupport/Testing/ProxyTestResult.html">ActiveSupport::Testing::ProxyTestResult</a>
  
    <li><a href="../ActiveSupport/Testing/RemoteError.html">ActiveSupport::Testing::RemoteError</a>
  
    <li><a href="../ActiveSupport/Testing/SetupAndTeardown.html">ActiveSupport::Testing::SetupAndTeardown</a>
  
    <li><a href="../ActiveSupport/Testing/SetupAndTeardown/ClassMethods.html">ActiveSupport::Testing::SetupAndTeardown::ClassMethods</a>
  
    <li><a href="../ActiveSupport/Testing/SetupAndTeardown/ForClassicTestUnit.html">ActiveSupport::Testing::SetupAndTeardown::ForClassicTestUnit</a>
  
    <li><a href="../ActiveSupport/Testing/SetupAndTeardown/ForMiniTest.html">ActiveSupport::Testing::SetupAndTeardown::ForMiniTest</a>
  
    <li><a href="../ActiveSupport/TimeWithZone.html">ActiveSupport::TimeWithZone</a>
  
    <li><a href="../ActiveSupport/TimeZone.html">ActiveSupport::TimeZone</a>
  
    <li><a href="../ActiveSupport/XmlMini.html">ActiveSupport::XmlMini</a>
  
    <li><a href="../ActiveSupport/XmlMini_LibXMLSAX.html">ActiveSupport::XmlMini_LibXMLSAX</a>
  
    <li><a href="../ActiveSupport/XmlMini_LibXMLSAX/HashBuilder.html">ActiveSupport::XmlMini_LibXMLSAX::HashBuilder</a>
  
    <li><a href="../ActiveSupport/XmlMini_NokogiriSAX.html">ActiveSupport::XmlMini_NokogiriSAX</a>
  
    <li><a href="../ActiveSupport/XmlMini_NokogiriSAX/HashBuilder.html">ActiveSupport::XmlMini_NokogiriSAX::HashBuilder</a>
  
    <li><a href="../ActionController.html">ActionController</a>
  
    <li><a href="../ActionController/Base.html">ActionController::Base</a>
  
    <li><a href="../ActionController/Caching.html">ActionController::Caching</a>
  
    <li><a href="../ActionController/Caching/Actions.html">ActionController::Caching::Actions</a>
  
    <li><a href="../ActionController/Caching/Actions/ActionCachePath.html">ActionController::Caching::Actions::ActionCachePath</a>
  
    <li><a href="../ActionController/Caching/Actions/ClassMethods.html">ActionController::Caching::Actions::ClassMethods</a>
  
    <li><a href="../ActionController/Caching/ConfigMethods.html">ActionController::Caching::ConfigMethods</a>
  
    <li><a href="../ActionController/Caching/Fragments.html">ActionController::Caching::Fragments</a>
  
    <li><a href="../ActionController/Caching/Pages.html">ActionController::Caching::Pages</a>
  
    <li><a href="../ActionController/Caching/Pages/ClassMethods.html">ActionController::Caching::Pages::ClassMethods</a>
  
    <li><a href="../ActionController/Caching/Sweeping.html">ActionController::Caching::Sweeping</a>
  
    <li><a href="../ActionController/Compatibility.html">ActionController::Compatibility</a>
  
    <li><a href="../ActionController/ConditionalGet.html">ActionController::ConditionalGet</a>
  
    <li><a href="../ActionController/Cookies.html">ActionController::Cookies</a>
  
    <li><a href="../ActionController/DataStreaming.html">ActionController::DataStreaming</a>
  
    <li><a href="../ActionController/Flash.html">ActionController::Flash</a>
  
    <li><a href="../ActionController/ForceSSL.html">ActionController::ForceSSL</a>
  
    <li><a href="../ActionController/ForceSSL/ClassMethods.html">ActionController::ForceSSL::ClassMethods</a>
  
    <li><a href="../ActionController/Head.html">ActionController::Head</a>
  
    <li><a href="../ActionController/Helpers.html">ActionController::Helpers</a>
  
    <li><a href="../ActionController/Helpers/ClassMethods.html">ActionController::Helpers::ClassMethods</a>
  
    <li><a href="../ActionController/HideActions.html">ActionController::HideActions</a>
  
    <li><a href="../ActionController/HideActions/ClassMethods.html">ActionController::HideActions::ClassMethods</a>
  
    <li><a href="../ActionController/HttpAuthentication.html">ActionController::HttpAuthentication</a>
  
    <li><a href="../ActionController/HttpAuthentication/Basic.html">ActionController::HttpAuthentication::Basic</a>
  
    <li><a href="../ActionController/HttpAuthentication/Basic/ControllerMethods.html">ActionController::HttpAuthentication::Basic::ControllerMethods</a>
  
    <li><a href="../ActionController/HttpAuthentication/Basic/ControllerMethods/ClassMethods.html">ActionController::HttpAuthentication::Basic::ControllerMethods::ClassMethods</a>
  
    <li><a href="../ActionController/HttpAuthentication/Digest.html">ActionController::HttpAuthentication::Digest</a>
  
    <li><a href="../ActionController/HttpAuthentication/Digest/ControllerMethods.html">ActionController::HttpAuthentication::Digest::ControllerMethods</a>
  
    <li><a href="../ActionController/HttpAuthentication/Token.html">ActionController::HttpAuthentication::Token</a>
  
    <li><a href="../ActionController/HttpAuthentication/Token/ControllerMethods.html">ActionController::HttpAuthentication::Token::ControllerMethods</a>
  
    <li><a href="../ActionController/ImplicitRender.html">ActionController::ImplicitRender</a>
  
    <li><a href="../ActionController/Instrumentation.html">ActionController::Instrumentation</a>
  
    <li><a href="../ActionController/Instrumentation/ClassMethods.html">ActionController::Instrumentation::ClassMethods</a>
  
    <li><a href="../ActionController/LogSubscriber.html">ActionController::LogSubscriber</a>
  
    <li><a href="../ActionController/Metal.html">ActionController::Metal</a>
  
    <li><a href="../ActionController/Middleware.html">ActionController::Middleware</a>
  
    <li><a href="../ActionController/Middleware/ActionMiddleware.html">ActionController::Middleware::ActionMiddleware</a>
  
    <li><a href="../ActionController/MimeResponds.html">ActionController::MimeResponds</a>
  
    <li><a href="../ActionController/MimeResponds/ClassMethods.html">ActionController::MimeResponds::ClassMethods</a>
  
    <li><a href="../ActionController/ParamsWrapper.html">ActionController::ParamsWrapper</a>
  
    <li><a href="../ActionController/ParamsWrapper/ClassMethods.html">ActionController::ParamsWrapper::ClassMethods</a>
  
    <li><a href="../ActionController/RackDelegation.html">ActionController::RackDelegation</a>
  
    <li><a href="../ActionController/Railtie.html">ActionController::Railtie</a>
  
    <li><a href="../ActionController/Railties.html">ActionController::Railties</a>
  
    <li><a href="../ActionController/Railties/Paths.html">ActionController::Railties::Paths</a>
  
    <li><a href="../ActionController/RecordIdentifier.html">ActionController::RecordIdentifier</a>
  
    <li><a href="../ActionController/Redirecting.html">ActionController::Redirecting</a>
  
    <li><a href="../ActionController/Renderers.html">ActionController::Renderers</a>
  
    <li><a href="../ActionController/Renderers/All.html">ActionController::Renderers::All</a>
  
    <li><a href="../ActionController/Renderers/ClassMethods.html">ActionController::Renderers::ClassMethods</a>
  
    <li><a href="../ActionController/Rendering.html">ActionController::Rendering</a>
  
    <li><a href="../ActionController/RequestForgeryProtection.html">ActionController::RequestForgeryProtection</a>
  
    <li><a href="../ActionController/RequestForgeryProtection/ClassMethods.html">ActionController::RequestForgeryProtection::ClassMethods</a>
  
    <li><a href="../ActionController/Rescue.html">ActionController::Rescue</a>
  
    <li><a href="../ActionController/Responder.html">ActionController::Responder</a>
  
    <li><a href="../ActionController/SessionManagement.html">ActionController::SessionManagement</a>
  
    <li><a href="../ActionController/SessionManagement/ClassMethods.html">ActionController::SessionManagement::ClassMethods</a>
  
    <li><a href="../ActionController/Streaming.html">ActionController::Streaming</a>
  
    <li><a href="../ActionController/TemplateAssertions.html">ActionController::TemplateAssertions</a>
  
    <li><a href="../ActionController/TestCase.html">ActionController::TestCase</a>
  
    <li><a href="../ActionController/TestCase/Behavior.html">ActionController::TestCase::Behavior</a>
  
    <li><a href="../ActionController/TestCase/Behavior/ClassMethods.html">ActionController::TestCase::Behavior::ClassMethods</a>
  
    <li><a href="../ActionController/TestCase/RaiseActionExceptions.html">ActionController::TestCase::RaiseActionExceptions</a>
  
    <li><a href="../ActionController/TestResponse.html">ActionController::TestResponse</a>
  
    <li><a href="../ActionController/Testing.html">ActionController::Testing</a>
  
    <li><a href="../ActionController/Testing/ClassMethods.html">ActionController::Testing::ClassMethods</a>
  
    <li><a href="../ActionController/UrlFor.html">ActionController::UrlFor</a>
  
    <li><a href="../ActionView.html">ActionView</a>
  
    <li><a href="../ActionView/ActionView.html">ActionView::ActionView</a>
  
    <li><a href="../ActionView/ActionView/ActionView.html">ActionView::ActionView::ActionView</a>
  
    <li><a href="../ActionView/ActionView/ActionView/Base.html">ActionView::ActionView::ActionView::Base</a>
  
    <li><a href="../ActionView/Base.html">ActionView::Base</a>
  
    <li><a href="../ActionView/Context.html">ActionView::Context</a>
  
    <li><a href="../ActionView/FileSystemResolver.html">ActionView::FileSystemResolver</a>
  
    <li><a href="../ActionView/FixtureResolver.html">ActionView::FixtureResolver</a>
  
    <li><a href="../ActionView/Helpers.html">ActionView::Helpers</a>
  
    <li><a href="../ActionView/Helpers/ActiveModelHelper.html">ActionView::Helpers::ActiveModelHelper</a>
  
    <li><a href="../ActionView/Helpers/ActiveModelInstanceTag.html">ActionView::Helpers::ActiveModelInstanceTag</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper.html">ActionView::Helpers::AssetTagHelper</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper/AssetIncludeTag.html">ActionView::Helpers::AssetTagHelper::AssetIncludeTag</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper/JavascriptIncludeTag.html">ActionView::Helpers::AssetTagHelper::JavascriptIncludeTag</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper/JavascriptTagHelpers.html">ActionView::Helpers::AssetTagHelper::JavascriptTagHelpers</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper/JavascriptTagHelpers/ClassMethods.html">ActionView::Helpers::AssetTagHelper::JavascriptTagHelpers::ClassMethods</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper/StylesheetIncludeTag.html">ActionView::Helpers::AssetTagHelper::StylesheetIncludeTag</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper/StylesheetTagHelpers.html">ActionView::Helpers::AssetTagHelper::StylesheetTagHelpers</a>
  
    <li><a href="../ActionView/Helpers/AssetTagHelper/StylesheetTagHelpers/ClassMethods.html">ActionView::Helpers::AssetTagHelper::StylesheetTagHelpers::ClassMethods</a>
  
    <li><a href="../ActionView/Helpers/AtomFeedHelper.html">ActionView::Helpers::AtomFeedHelper</a>
  
    <li><a href="../ActionView/Helpers/AtomFeedHelper/AtomBuilder.html">ActionView::Helpers::AtomFeedHelper::AtomBuilder</a>
  
    <li><a href="../ActionView/Helpers/AtomFeedHelper/AtomFeedBuilder.html">ActionView::Helpers::AtomFeedHelper::AtomFeedBuilder</a>
  
    <li><a href="../ActionView/Helpers/CacheHelper.html">ActionView::Helpers::CacheHelper</a>
  
    <li><a href="../ActionView/Helpers/CaptureHelper.html">ActionView::Helpers::CaptureHelper</a>
  
    <li><a href="../ActionView/Helpers/CsrfHelper.html">ActionView::Helpers::CsrfHelper</a>
  
    <li><a href="../ActionView/Helpers/DateHelper.html">ActionView::Helpers::DateHelper</a>
  
    <li><a href="../ActionView/Helpers/DateHelperInstanceTag.html">ActionView::Helpers::DateHelperInstanceTag</a>
  
    <li><a href="../ActionView/Helpers/DebugHelper.html">ActionView::Helpers::DebugHelper</a>
  
    <li><a href="../ActionView/Helpers/FormBuilder.html">ActionView::Helpers::FormBuilder</a>
  
    <li><a href="../ActionView/Helpers/FormHelper.html">ActionView::Helpers::FormHelper</a>
  
    <li><a href="../ActionView/Helpers/FormOptionsHelper.html">ActionView::Helpers::FormOptionsHelper</a>
  
    <li><a href="../ActionView/Helpers/FormTagHelper.html">ActionView::Helpers::FormTagHelper</a>
  
    <li><a href="../ActionView/Helpers/InstanceTag.html">ActionView::Helpers::InstanceTag</a>
  
    <li><a href="../ActionView/Helpers/JavaScriptHelper.html">ActionView::Helpers::JavaScriptHelper</a>
  
    <li><a href="../ActionView/Helpers/NumberHelper.html">ActionView::Helpers::NumberHelper</a>
  
    <li><a href="../ActionView/Helpers/NumberHelper/InvalidNumberError.html">ActionView::Helpers::NumberHelper::InvalidNumberError</a>
  
    <li><a href="../ActionView/Helpers/OutputSafetyHelper.html">ActionView::Helpers::OutputSafetyHelper</a>
  
    <li><a href="../ActionView/Helpers/RecordTagHelper.html">ActionView::Helpers::RecordTagHelper</a>
  
    <li><a href="../ActionView/Helpers/RenderingHelper.html">ActionView::Helpers::RenderingHelper</a>
  
    <li><a href="../ActionView/Helpers/SanitizeHelper.html">ActionView::Helpers::SanitizeHelper</a>
  
    <li><a href="../ActionView/Helpers/TagHelper.html">ActionView::Helpers::TagHelper</a>
  
    <li><a href="../ActionView/Helpers/TextHelper.html">ActionView::Helpers::TextHelper</a>
  
    <li><a href="../ActionView/Helpers/TranslationHelper.html">ActionView::Helpers::TranslationHelper</a>
  
    <li><a href="../ActionView/Helpers/UrlHelper.html">ActionView::Helpers::UrlHelper</a>
  
    <li><a href="../ActionView/LogSubscriber.html">ActionView::LogSubscriber</a>
  
    <li><a href="../ActionView/LookupContext.html">ActionView::LookupContext</a>
  
    <li><a href="../ActionView/LookupContext/DetailsCache.html">ActionView::LookupContext::DetailsCache</a>
  
    <li><a href="../ActionView/LookupContext/ViewPaths.html">ActionView::LookupContext::ViewPaths</a>
  
    <li><a href="../ActionView/NullResolver.html">ActionView::NullResolver</a>
  
    <li><a href="../ActionView/PartialRenderer.html">ActionView::PartialRenderer</a>
  
    <li><a href="../ActionView/Railtie.html">ActionView::Railtie</a>
  
    <li><a href="../ActionView/Renderer.html">ActionView::Renderer</a>
  
    <li><a href="../ActionView/Resolver.html">ActionView::Resolver</a>
  
    <li><a href="../ActionView/Resolver/Path.html">ActionView::Resolver::Path</a>
  
    <li><a href="../ActionView/Template.html">ActionView::Template</a>
  
    <li><a href="../ActionView/Template/Handlers.html">ActionView::Template::Handlers</a>
  
    <li><a href="../ActionView/Template/Handlers/Builder.html">ActionView::Template::Handlers::Builder</a>
  
    <li><a href="../ActionView/Template/Handlers/ERB.html">ActionView::Template::Handlers::ERB</a>
  
    <li><a href="../ActionView/Template/Handlers/Erubis.html">ActionView::Template::Handlers::Erubis</a>
  
    <li><a href="../ActionView/TestCase.html">ActionView::TestCase</a>
  
    <li><a href="../ActionView/TestCase/Behavior.html">ActionView::TestCase::Behavior</a>
  
    <li><a href="../ActionView/TestCase/Behavior/ClassMethods.html">ActionView::TestCase::Behavior::ClassMethods</a>
  
    <li><a href="../ActionView/TestCase/Behavior/Locals.html">ActionView::TestCase::Behavior::Locals</a>
  
    <li><a href="../ActionView/TestCase/TestController.html">ActionView::TestCase::TestController</a>
  
    <li><a href="../ActiveModel.html">ActiveModel</a>
  
    <li><a href="../ActiveModel/AttributeMethods.html">ActiveModel::AttributeMethods</a>
  
    <li><a href="../ActiveModel/AttributeMethods/ClassMethods.html">ActiveModel::AttributeMethods::ClassMethods</a>
  
    <li><a href="../ActiveModel/AttributeMethods/ClassMethods/AttributeMethodMatcher.html">ActiveModel::AttributeMethods::ClassMethods::AttributeMethodMatcher</a>
  
    <li><a href="../ActiveModel/BlockValidator.html">ActiveModel::BlockValidator</a>
  
    <li><a href="../ActiveModel/Callbacks.html">ActiveModel::Callbacks</a>
  
    <li><a href="../ActiveModel/Conversion.html">ActiveModel::Conversion</a>
  
    <li><a href="../ActiveModel/Dirty.html">ActiveModel::Dirty</a>
  
    <li><a href="../ActiveModel/EachValidator.html">ActiveModel::EachValidator</a>
  
    <li><a href="../ActiveModel/Errors.html">ActiveModel::Errors</a>
  
    <li><a href="../ActiveModel/Lint.html">ActiveModel::Lint</a>
  
    <li><a href="../ActiveModel/Lint/Tests.html">ActiveModel::Lint::Tests</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity.html">ActiveModel::MassAssignmentSecurity</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/BlackList.html">ActiveModel::MassAssignmentSecurity::BlackList</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/ClassMethods.html">ActiveModel::MassAssignmentSecurity::ClassMethods</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/Error.html">ActiveModel::MassAssignmentSecurity::Error</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/LoggerSanitizer.html">ActiveModel::MassAssignmentSecurity::LoggerSanitizer</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/PermissionSet.html">ActiveModel::MassAssignmentSecurity::PermissionSet</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/Sanitizer.html">ActiveModel::MassAssignmentSecurity::Sanitizer</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/StrictSanitizer.html">ActiveModel::MassAssignmentSecurity::StrictSanitizer</a>
  
    <li><a href="../ActiveModel/MassAssignmentSecurity/WhiteList.html">ActiveModel::MassAssignmentSecurity::WhiteList</a>
  
    <li><a href="../ActiveModel/MissingAttributeError.html">ActiveModel::MissingAttributeError</a>
  
    <li><a href="../ActiveModel/Name.html">ActiveModel::Name</a>
  
    <li><a href="../ActiveModel/Naming.html">ActiveModel::Naming</a>
  
    <li><a href="../ActiveModel/Observer.html">ActiveModel::Observer</a>
  
    <li><a href="../ActiveModel/ObserverArray.html">ActiveModel::ObserverArray</a>
  
    <li><a href="../ActiveModel/Observing.html">ActiveModel::Observing</a>
  
    <li><a href="../ActiveModel/Observing/ClassMethods.html">ActiveModel::Observing::ClassMethods</a>
  
    <li><a href="../ActiveModel/SecurePassword.html">ActiveModel::SecurePassword</a>
  
    <li><a href="../ActiveModel/SecurePassword/ClassMethods.html">ActiveModel::SecurePassword::ClassMethods</a>
  
    <li><a href="../ActiveModel/SecurePassword/InstanceMethodsOnActivation.html">ActiveModel::SecurePassword::InstanceMethodsOnActivation</a>
  
    <li><a href="../ActiveModel/Serialization.html">ActiveModel::Serialization</a>
  
    <li><a href="../ActiveModel/Serializers.html">ActiveModel::Serializers</a>
  
    <li><a href="../ActiveModel/Serializers/JSON.html">ActiveModel::Serializers::JSON</a>
  
    <li><a href="../ActiveModel/Serializers/Xml.html">ActiveModel::Serializers::Xml</a>
  
    <li><a href="../ActiveModel/StrictValidationFailed.html">ActiveModel::StrictValidationFailed</a>
  
    <li><a href="../ActiveModel/Translation.html">ActiveModel::Translation</a>
  
    <li><a href="../ActiveModel/Validations.html">ActiveModel::Validations</a>
  
    <li><a href="../ActiveModel/Validations/AcceptanceValidator.html">ActiveModel::Validations::AcceptanceValidator</a>
  
    <li><a href="../ActiveModel/Validations/Callbacks.html">ActiveModel::Validations::Callbacks</a>
  
    <li><a href="../ActiveModel/Validations/Callbacks/ClassMethods.html">ActiveModel::Validations::Callbacks::ClassMethods</a>
  
    <li><a href="../ActiveModel/Validations/ClassMethods.html">ActiveModel::Validations::ClassMethods</a>
  
    <li><a href="../ActiveModel/Validations/ConfirmationValidator.html">ActiveModel::Validations::ConfirmationValidator</a>
  
    <li><a href="../ActiveModel/Validations/ExclusionValidator.html">ActiveModel::Validations::ExclusionValidator</a>
  
    <li><a href="../ActiveModel/Validations/FormatValidator.html">ActiveModel::Validations::FormatValidator</a>
  
    <li><a href="../ActiveModel/Validations/HelperMethods.html">ActiveModel::Validations::HelperMethods</a>
  
    <li><a href="../ActiveModel/Validations/InclusionValidator.html">ActiveModel::Validations::InclusionValidator</a>
  
    <li><a href="../ActiveModel/Validations/LengthValidator.html">ActiveModel::Validations::LengthValidator</a>
  
    <li><a href="../ActiveModel/Validations/NumericalityValidator.html">ActiveModel::Validations::NumericalityValidator</a>
  
    <li><a href="../ActiveModel/Validations/PresenceValidator.html">ActiveModel::Validations::PresenceValidator</a>
  
    <li><a href="../ActiveModel/Validations/WithValidator.html">ActiveModel::Validations::WithValidator</a>
  
    <li><a href="../ActiveModel/Validator.html">ActiveModel::Validator</a>
  
    <li><a href="../ActiveResource.html">ActiveResource</a>
  
    <li><a href="../ActiveResource/Base.html">ActiveResource::Base</a>
  
    <li><a href="../ActiveResource/Connection.html">ActiveResource::Connection</a>
  
    <li><a href="../ActiveResource/CustomMethods.html">ActiveResource::CustomMethods</a>
  
    <li><a href="../ActiveResource/CustomMethods/ClassMethods.html">ActiveResource::CustomMethods::ClassMethods</a>
  
    <li><a href="../ActiveResource/Errors.html">ActiveResource::Errors</a>
  
    <li><a href="../ActiveResource/Formats.html">ActiveResource::Formats</a>
  
    <li><a href="../ActiveResource/Formats/JsonFormat.html">ActiveResource::Formats::JsonFormat</a>
  
    <li><a href="../ActiveResource/Formats/XmlFormat.html">ActiveResource::Formats::XmlFormat</a>
  
    <li><a href="../ActiveResource/HttpMock.html">ActiveResource::HttpMock</a>
  
    <li><a href="../ActiveResource/InvalidRequestError.html">ActiveResource::InvalidRequestError</a>
  
    <li><a href="../ActiveResource/LogSubscriber.html">ActiveResource::LogSubscriber</a>
  
    <li><a href="../ActiveResource/Observing.html">ActiveResource::Observing</a>
  
    <li><a href="../ActiveResource/Railtie.html">ActiveResource::Railtie</a>
  
    <li><a href="../ActiveResource/Request.html">ActiveResource::Request</a>
  
    <li><a href="../ActiveResource/Response.html">ActiveResource::Response</a>
  
    <li><a href="../ActiveResource/SSLError.html">ActiveResource::SSLError</a>
  
    <li><a href="../ActiveResource/TimeoutError.html">ActiveResource::TimeoutError</a>
  
    <li><a href="../ActiveResource/Validations.html">ActiveResource::Validations</a>
  
    <li><a href="../HTML.html">HTML</a>
  
    <li><a href="../HTML/FullSanitizer.html">HTML::FullSanitizer</a>
  
    <li><a href="../HTML/LinkSanitizer.html">HTML::LinkSanitizer</a>
  
    <li><a href="../HTML/Sanitizer.html">HTML::Sanitizer</a>
  
    <li><a href="../HTML/Selector.html">HTML::Selector</a>
  
    <li><a href="../HTML/Tag.html">HTML::Tag</a>
  
    <li><a href="../HTML/WhiteListSanitizer.html">HTML::WhiteListSanitizer</a>
  
    <li><a href="../Mysql.html">Mysql</a>
  
    <li><a href="../Mysql/Result.html">Mysql::Result</a>
  
    <li><a href="../Mysql/Stmt.html">Mysql::Stmt</a>
  
    <li><a href="../Mysql/Time.html">Mysql::Time</a>
  
    <li><a href="../Test.html">Test</a>
  
    <li><a href="../Test/Unit.html">Test::Unit</a>
  
    <li><a href="../Test/Unit/Collector.html">Test::Unit::Collector</a>
  
    <li><a href="../Test/Unit/Collector/ObjectSpace.html">Test::Unit::Collector::ObjectSpace</a>
  
    <li><a href="../I18n.html">I18n</a>
  
    <li><a href="../I18n/ExceptionHandler.html">I18n::ExceptionHandler</a>
  
    <li><a href="../I18n/Railtie.html">I18n::Railtie</a>
  
    <li><a href="../Object.html">Object</a>
  
    <li><a href="../ActiveSupport/HashWithIndifferentAccess.html">Object::HashWithIndifferentAccess</a>
  
    <li><a href="../LoadError.html">Object::MissingSourceFile</a>
  
    <li><a href="../ActionMailer.html">ActionMailer</a>
  
    <li><a href="../ActionMailer/Base.html">ActionMailer::Base</a>
  
    <li><a href="../ArJdbcMySQL.html">ArJdbcMySQL</a>
  
    <li><a href="../ArJdbcMySQL/Error.html">ArJdbcMySQL::Error</a>
  
    <li><a href="../ERB.html">ERB</a>
  
    <li><a href="../ERB/Util.html">ERB::Util</a>
  
    <li><a href="../LoadError.html">LoadError</a>
  
    <li><a href="../LoadError.html">LoadError</a>
  
    <li><a href="../Logger.html">Logger</a>
  
    <li><a href="../Logger/SimpleFormatter.html">Logger::SimpleFormatter</a>
  
    <li><a href="../Array.html">Array</a>
  
    <li><a href="../Base64.html">Base64</a>
  
    <li><a href="../Benchmark.html">Benchmark</a>
  
    <li><a href="../BigDecimal.html">BigDecimal</a>
  
    <li><a href="../Class.html">Class</a>
  
    <li><a href="../Date.html">Date</a>
  
    <li><a href="../DateTime.html">DateTime</a>
  
    <li><a href="../Enumerable.html">Enumerable</a>
  
    <li><a href="../FalseClass.html">FalseClass</a>
  
    <li><a href="../File.html">File</a>
  
    <li><a href="../Float.html">Float</a>
  
    <li><a href="../Hash.html">Hash</a>
  
    <li><a href="../Integer.html">Integer</a>
  
    <li><a href="../Kernel.html">Kernel</a>
  
    <li><a href="../Module.html">Module</a>
  
    <li><a href="../NameError.html">NameError</a>
  
    <li><a href="../NilClass.html">NilClass</a>
  
    <li><a href="../Numeric.html">Numeric</a>
  
    <li><a href="../Process.html">Process</a>
  
    <li><a href="../QualifiedConstUtils.html">QualifiedConstUtils</a>
  
    <li><a href="../Rails.html">Rails</a>
  
    <li><a href="../Range.html">Range</a>
  
    <li><a href="../Regexp.html">Regexp</a>
  
    <li><a href="../String.html">String</a>
  
    <li><a href="../Symbol.html">Symbol</a>
  
    <li><a href="../Time.html">Time</a>
  
    <li><a href="../TrueClass.html">TrueClass</a>
  
    <li><a href="../URI.html">URI</a>
  
  </ul>
</nav>

  </div>
</nav>

<div id="documentation">
  <h1 class="class">class ActiveRecord::Migration</h1>

  <div id="description" class="description">
    
<h1 id="label-Active+Record+Migrations">Active Record Migrations</h1>

<p>Migrations can manage the evolution of a schema used by several physical
databases. It’s a solution to the common problem of adding a field to make
a new feature work in your local database, but being unsure of how to push
that change to other developers and to the production server. With
migrations, you can describe the transformations in self-contained classes
that can be checked into version control systems and executed against
another database that might be one, two, or five versions behind.</p>

<p>Example of a simple migration:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">AddSsl</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
    <span class="ruby-identifier">add_column</span> :<span class="ruby-identifier">accounts</span>, :<span class="ruby-identifier">ssl_enabled</span>, :<span class="ruby-identifier">boolean</span>, :<span class="ruby-identifier">default</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier">down</span>
    <span class="ruby-identifier">remove_column</span> :<span class="ruby-identifier">accounts</span>, :<span class="ruby-identifier">ssl_enabled</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<p>This migration will add a boolean flag to the accounts table and remove it
if you’re backing out of the migration. It shows how all migrations have
two methods <code>up</code> and <code>down</code> that describes the
transformations required to implement or remove the migration. These
methods can consist of both the migration specific methods like add_column
and remove_column, but may also contain regular Ruby code for generating
data needed for the transformations.</p>

<p>Example of a more complex migration that also needs to initialize data:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">AddSystemSettings</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
    <span class="ruby-identifier">create_table</span> :<span class="ruby-identifier">system_settings</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">string</span>  :<span class="ruby-identifier">name</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">string</span>  :<span class="ruby-identifier">label</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">text</span>    :<span class="ruby-identifier">value</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">string</span>  :<span class="ruby-identifier">type</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">integer</span> :<span class="ruby-identifier">position</span>
    <span class="ruby-keyword">end</span>

    <span class="ruby-constant">SystemSetting</span>.<span class="ruby-identifier">create</span>  :<span class="ruby-identifier">name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;notice&quot;</span>,
                          :<span class="ruby-identifier">label</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;Use notice?&quot;</span>,
                          :<span class="ruby-identifier">value</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier">down</span>
    <span class="ruby-identifier">drop_table</span> :<span class="ruby-identifier">system_settings</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<p>This migration first adds the system_settings table, then creates the very
first row in it using the Active Record model that relies on the table. It
also uses the more advanced create_table syntax where you can specify a
complete table schema in one block call.</p>

<h2 id="label-Available+transformations">Available transformations</h2>
<ul><li>
<p><code>create_table(name, options)</code> Creates a table called
<code>name</code> and makes the table object available to a block that can
then add columns to it, following the same format as add_column. See
example above. The options hash is for fragments like "DEFAULT
CHARSET=UTF-8" that are appended to the create table definition.</p>
</li><li>
<p><code>drop_table(name)</code>: Drops the table called <code>name</code>.</p>
</li><li>
<p><code>rename_table(old_name, new_name)</code>: Renames the table called
<code>old_name</code> to <code>new_name</code>.</p>
</li><li>
<p><code>add_column(table_name, column_name, type, options)</code>: Adds a new
column to the table called <code>table_name</code> named
<code>column_name</code> specified to be one of the following types:
<code>:string</code>, <code>:text</code>, <code>:integer</code>,
<code>:float</code>, <code>:decimal</code>, <code>:datetime</code>,
<code>:timestamp</code>, <code>:time</code>, <code>:date</code>,
<code>:binary</code>, <code>:boolean</code>. A default value can be
specified by passing an <code>options</code> hash like <code>{ :default
=&gt; 11 }</code>. Other options include <code>:limit</code> and
<code>:null</code> (e.g. <code>{ :limit =&gt; 50, :null =&gt; false
}</code>) -- see <a
href="ConnectionAdapters/TableDefinition.html#method-i-column">ActiveRecord::ConnectionAdapters::TableDefinition#column</a>
for details.</p>
</li><li>
<p><code>rename_column(table_name, column_name, new_column_name)</code>:
Renames a column but keeps the type and content.</p>
</li><li>
<p><code>change_column(table_name, column_name, type, options)</code>: 
Changes the column to a different type using the same parameters as
add_column.</p>
</li><li>
<p><code>remove_column(table_name, column_names)</code>: Removes the column
listed in <code>column_names</code> from the table called
<code>table_name</code>.</p>
</li><li>
<p><code>add_index(table_name, column_names, options)</code>: Adds a new index
with the name of the column. Other options include <code>:name</code>,
<code>:unique</code> (e.g. <code>{ :name =&gt;
&quot;users_name_index&quot;, :unique =&gt; true }</code>) and
<code>:order</code> (e.g. { :order =&gt; {:name =&gt; :desc} }&lt;/tt&gt;).</p>
</li><li>
<p><code>remove_index(table_name, :column =&gt; column_name)</code>: Removes
the index specified by <code>column_name</code>.</p>
</li><li>
<p><code>remove_index(table_name, :name =&gt; index_name)</code>: Removes the
index specified by <code>index_name</code>.</p>
</li></ul>

<h2 id="label-Irreversible+transformations">Irreversible transformations</h2>

<p>Some transformations are destructive in a manner that cannot be reversed.
Migrations of that kind should raise an
<code>ActiveRecord::IrreversibleMigration</code> exception in their
<code>down</code> method.</p>

<h2 id="label-Running+migrations+from+within+Rails">Running migrations from within <a href="../Rails.html">Rails</a></h2>

<p>The <a href="../Rails.html">Rails</a> package has several tools to help
create and apply migrations.</p>

<p>To generate a new migration, you can use</p>

<pre>rails generate migration MyNewMigration</pre>

<p>where MyNewMigration is the name of your migration. The generator will
create an empty migration file <code>timestamp_my_new_migration.rb</code>
in the <code>db/migrate/</code> directory where <code>timestamp</code> is
the UTC formatted date and time that the migration was generated.</p>

<p>You may then edit the <code>up</code> and <code>down</code> methods of
MyNewMigration.</p>

<p>There is a special syntactic shortcut to generate migrations that add
fields to a table.</p>

<pre>rails generate migration add_fieldname_to_tablename fieldname:string</pre>

<p>This will generate the file
<code>timestamp_add_fieldname_to_tablename</code>, which will look like
this:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">AddFieldnameToTablename</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
    <span class="ruby-identifier">add_column</span> :<span class="ruby-identifier">tablenames</span>, :<span class="ruby-identifier">fieldname</span>, :<span class="ruby-identifier">string</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier">down</span>
    <span class="ruby-identifier">remove_column</span> :<span class="ruby-identifier">tablenames</span>, :<span class="ruby-identifier">fieldname</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<p>To run migrations against the currently configured database, use <code>rake
db:migrate</code>. This will update the database by running all of the
pending migrations, creating the <code>schema_migrations</code> table (see
“About the schema_migrations table” section below) if missing. It will also
invoke the db:schema:dump task, which will update your db/schema.rb file to
match the structure of your database.</p>

<p>To roll the database back to a previous migration version, use <code>rake
db:migrate VERSION=X</code> where <code>X</code> is the version to which
you wish to downgrade. If any of the migrations throw an
<code>ActiveRecord::IrreversibleMigration</code> exception, that step will
fail and you’ll have some manual work to do.</p>

<h2 id="label-Database+support">Database support</h2>

<p>Migrations are currently supported in MySQL, PostgreSQL, SQLite, SQL
Server, Sybase, and Oracle (all supported databases except DB2).</p>

<h2 id="label-More+examples">More examples</h2>

<p>Not all migrations change the schema. Some just fix the data:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">RemoveEmptyTags</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
    <span class="ruby-constant">Tag</span>.<span class="ruby-identifier">all</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">tag</span><span class="ruby-operator">|</span> <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">destroy</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">tag</span>.<span class="ruby-identifier">pages</span>.<span class="ruby-identifier">empty?</span> }
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier">down</span>
    <span class="ruby-comment"># not much we can do to restore deleted data</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">IrreversibleMigration</span>, <span class="ruby-string">&quot;Can't recover the deleted tags&quot;</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<p>Others remove columns when they migrate up instead of down:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">RemoveUnnecessaryItemAttributes</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
    <span class="ruby-identifier">remove_column</span> :<span class="ruby-identifier">items</span>, :<span class="ruby-identifier">incomplete_items_count</span>
    <span class="ruby-identifier">remove_column</span> :<span class="ruby-identifier">items</span>, :<span class="ruby-identifier">completed_items_count</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier">down</span>
    <span class="ruby-identifier">add_column</span> :<span class="ruby-identifier">items</span>, :<span class="ruby-identifier">incomplete_items_count</span>
    <span class="ruby-identifier">add_column</span> :<span class="ruby-identifier">items</span>, :<span class="ruby-identifier">completed_items_count</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<p>And sometimes you need to do something in SQL not abstracted directly by
migrations:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">MakeJoinUnique</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
    <span class="ruby-identifier">execute</span> <span class="ruby-string">&quot;ALTER TABLE `pages_linked_pages` ADD UNIQUE `page_id_linked_page_id` (`page_id`,`linked_page_id`)&quot;</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier">down</span>
    <span class="ruby-identifier">execute</span> <span class="ruby-string">&quot;ALTER TABLE `pages_linked_pages` DROP INDEX `page_id_linked_page_id`&quot;</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<h2 id="label-Using+a+model+after+changing+its+table">Using a model after changing its table</h2>

<p>Sometimes you’ll want to add a column in a migration and populate it
immediately after. In that case, you’ll need to make a call to
<code>Base#reset_column_information</code> in order to ensure that the
model has the latest column data from after the new column was added.
Example:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">AddPeopleSalary</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
    <span class="ruby-identifier">add_column</span> :<span class="ruby-identifier">people</span>, :<span class="ruby-identifier">salary</span>, :<span class="ruby-identifier">integer</span>
    <span class="ruby-constant">Person</span>.<span class="ruby-identifier">reset_column_information</span>
    <span class="ruby-constant">Person</span>.<span class="ruby-identifier">all</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
      <span class="ruby-identifier">p</span>.<span class="ruby-identifier">update_column</span> :<span class="ruby-identifier">salary</span>, <span class="ruby-constant">SalaryCalculator</span>.<span class="ruby-identifier">compute</span>(<span class="ruby-identifier">p</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<h2 id="label-Controlling+verbosity">Controlling verbosity</h2>

<p>By default, migrations will describe the actions they are taking, writing
them to the console as they happen, along with benchmarks describing how
long each step took.</p>

<p>You can quiet them down by setting ActiveRecord::Migration.verbose = false.</p>

<p>You can also insert your own messages and benchmarks by using the
<code>say_with_time</code> method:</p>

<pre class="ruby"><span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
  <span class="ruby-operator">...</span>
  <span class="ruby-identifier">say_with_time</span> <span class="ruby-string">&quot;Updating salaries...&quot;</span> <span class="ruby-keyword">do</span>
    <span class="ruby-constant">Person</span>.<span class="ruby-identifier">all</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span>
      <span class="ruby-identifier">p</span>.<span class="ruby-identifier">update_column</span> :<span class="ruby-identifier">salary</span>, <span class="ruby-constant">SalaryCalculator</span>.<span class="ruby-identifier">compute</span>(<span class="ruby-identifier">p</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-operator">...</span>
<span class="ruby-keyword">end</span>
</pre>

<p>The phrase “Updating salaries…” would then be printed, along with the
benchmark for the block when the block completes.</p>

<h2 id="label-About+the+schema_migrations+table">About the schema_migrations table</h2>

<p><a href="../Rails.html">Rails</a> versions 2.0 and prior used to create a
table called <code>schema_info</code> when using migrations. This table
contained the version of the schema as of the last applied migration.</p>

<p>Starting with <a href="../Rails.html">Rails</a> 2.1, the
<code>schema_info</code> table is (automatically) replaced by the
<code>schema_migrations</code> table, which contains the version numbers of
all the migrations applied.</p>

<p>As a result, it is now possible to add migration files that are numbered
lower than the current schema version: when migrating up, those
never-applied “interleaved” migrations will be automatically applied, and
when migrating down, never-applied “interleaved” migrations will be
skipped.</p>

<h2 id="label-Timestamped+Migrations">Timestamped Migrations</h2>

<p>By default, <a href="../Rails.html">Rails</a> generates migrations that
look like:</p>

<pre>20080717013526_your_migration_name.rb</pre>

<p>The prefix is a generation timestamp (in UTC).</p>

<p>If you’d prefer to use numeric prefixes, you can turn timestamped
migrations off by setting:</p>

<pre>config.active_record.timestamped_migrations = false</pre>

<p>In application.rb.</p>

<h2 id="label-Reversible+Migrations">Reversible Migrations</h2>

<p>Starting with <a href="../Rails.html">Rails</a> 3.1, you will be able to
define reversible migrations. Reversible migrations are migrations that
know how to go <code>down</code> for you. You simply supply the
<code>up</code> logic, and the <a href="Migration.html">Migration</a>
system will figure out how to execute the down commands for you.</p>

<p>To define a reversible migration, define the <code>change</code> method in
your migration like this:</p>

<pre class="ruby"><span class="ruby-keyword">class</span> <span class="ruby-constant">TenderloveMigration</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migration</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">change</span>
    <span class="ruby-identifier">create_table</span>(:<span class="ruby-identifier">horses</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">column</span> :<span class="ruby-identifier">content</span>, :<span class="ruby-identifier">text</span>
      <span class="ruby-identifier">t</span>.<span class="ruby-identifier">column</span> :<span class="ruby-identifier">remind_at</span>, :<span class="ruby-identifier">datetime</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<p>This migration will create the horses table for you on the way up, and
automatically figure out how to drop the table on the way down.</p>

<p>Some commands like <code>remove_column</code> cannot be reversed.  If you
care to define how to move up and down in these cases, you should define
the <code>up</code> and <code>down</code> methods as before.</p>

<p>If a command cannot be reversed, an
<code>ActiveRecord::IrreversibleMigration</code> exception will be raised
when the migration is moving down.</p>

<p>For a list of commands that are reversible, please see
<code>ActiveRecord::Migration::CommandRecorder</code>.</p>

  </div><!-- description -->

  
  
  
  <section id="5Buntitled-5D" class="documentation-section">
    

    

    

    
    <!-- Attributes -->
    <section id="attribute-method-details" class="method-section section">
      <h3 class="section-header">Attributes</h3>

      
      <div id="attribute-i-name" class="method-detail">
        <div class="method-heading attribute-method-heading">
          <span class="method-name">name</span><span
            class="attribute-access-type">[RW]</span>
        </div>

        <div class="method-description">
        
        
        
        </div>
      </div>
      
      <div id="attribute-i-version" class="method-detail">
        <div class="method-heading attribute-method-heading">
          <span class="method-name">version</span><span
            class="attribute-access-type">[RW]</span>
        </div>

        <div class="method-description">
        
        
        
        </div>
      </div>
      
    </section><!-- attribute-method-details -->
    

    <!-- Methods -->
    
     <section id="public-class-5Buntitled-5D-method-details" class="method-section section">
      <h3 class="section-header">Public Class Methods</h3>

    
      <div id="method-c-migrate" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">migrate</span><span
            class="method-args">(direction)</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="migrate-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 337</span>
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">migrate</span>(<span class="ruby-identifier">direction</span>)
  <span class="ruby-identifier">new</span>.<span class="ruby-identifier">migrate</span> <span class="ruby-identifier">direction</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- migrate-source -->
          
        </div>

        

        
      </div><!-- migrate-method -->

    
      <div id="method-c-new" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">new</span><span
            class="method-args">()</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="new-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 345</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>
  <span class="ruby-ivar">@name</span>       = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">name</span>
  <span class="ruby-ivar">@version</span>    = <span class="ruby-keyword">nil</span>
  <span class="ruby-ivar">@connection</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-ivar">@reverting</span>  = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- new-source -->
          
        </div>

        

        
      </div><!-- new-method -->

    
    </section><!-- public-class-method-details -->
  
     <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
      <h3 class="section-header">Public Instance Methods</h3>

    
      <div id="method-i-announce" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">announce</span><span
            class="method-args">(message)</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="announce-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 425</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">announce</span>(<span class="ruby-identifier">message</span>)
  <span class="ruby-identifier">text</span> = <span class="ruby-node">&quot;#{version} #{name}: #{message}&quot;</span>
  <span class="ruby-identifier">length</span> = [<span class="ruby-value">0</span>, <span class="ruby-value">75</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">length</span>].<span class="ruby-identifier">max</span>
  <span class="ruby-identifier">write</span> <span class="ruby-string">&quot;== %s %s&quot;</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">text</span>, <span class="ruby-string">&quot;=&quot;</span> * <span class="ruby-identifier">length</span>]
<span class="ruby-keyword">end</span></pre>
          </div><!-- announce-source -->
          
        </div>

        

        
      </div><!-- announce-method -->

    
      <div id="method-i-connection" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">connection</span><span
            class="method-args">()</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="connection-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 451</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">connection</span>
  <span class="ruby-ivar">@connection</span> <span class="ruby-operator">||</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- connection-source -->
          
        </div>

        

        
      </div><!-- connection-method -->

    
      <div id="method-i-copy" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">copy</span><span
            class="method-args">(destination, sources, options = {})</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="copy-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 470</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">copy</span>(<span class="ruby-identifier">destination</span>, <span class="ruby-identifier">sources</span>, <span class="ruby-identifier">options</span> = {})
  <span class="ruby-identifier">copied</span> = []

  <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span>(<span class="ruby-identifier">destination</span>) <span class="ruby-keyword">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">destination</span>)

  <span class="ruby-identifier">destination_migrations</span> = <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migrator</span>.<span class="ruby-identifier">migrations</span>(<span class="ruby-identifier">destination</span>)
  <span class="ruby-identifier">last</span> = <span class="ruby-identifier">destination_migrations</span>.<span class="ruby-identifier">last</span>
  <span class="ruby-identifier">sources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">scope</span>, <span class="ruby-identifier">path</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">source_migrations</span> = <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Migrator</span>.<span class="ruby-identifier">migrations</span>(<span class="ruby-identifier">path</span>)

    <span class="ruby-identifier">source_migrations</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">migration</span><span class="ruby-operator">|</span>
      <span class="ruby-identifier">source</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">migration</span>.<span class="ruby-identifier">filename</span>)
      <span class="ruby-identifier">source</span> = <span class="ruby-node">&quot;# This migration comes from #{scope} (originally #{migration.version})\n#{source}&quot;</span>

      <span class="ruby-keyword">if</span> <span class="ruby-identifier">duplicate</span> = <span class="ruby-identifier">destination_migrations</span>.<span class="ruby-identifier">detect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">migration</span>.<span class="ruby-identifier">name</span> }
        <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_skip</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">duplicate</span>.<span class="ruby-identifier">scope</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">scope</span>.<span class="ruby-identifier">to_s</span>
          <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_skip</span>].<span class="ruby-identifier">call</span>(<span class="ruby-identifier">scope</span>, <span class="ruby-identifier">migration</span>)
        <span class="ruby-keyword">end</span>
        <span class="ruby-keyword">next</span>
      <span class="ruby-keyword">end</span>

      <span class="ruby-identifier">migration</span>.<span class="ruby-identifier">version</span> = <span class="ruby-identifier">next_migration_number</span>(<span class="ruby-identifier">last</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">last</span>.<span class="ruby-identifier">version</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>).<span class="ruby-identifier">to_i</span>
      <span class="ruby-identifier">new_path</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">destination</span>, <span class="ruby-node">&quot;#{migration.version}_#{migration.name.underscore}.#{scope}.rb&quot;</span>)
      <span class="ruby-identifier">old_path</span>, <span class="ruby-identifier">migration</span>.<span class="ruby-identifier">filename</span> = <span class="ruby-identifier">migration</span>.<span class="ruby-identifier">filename</span>, <span class="ruby-identifier">new_path</span>
      <span class="ruby-identifier">last</span> = <span class="ruby-identifier">migration</span>

      <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">migration</span>.<span class="ruby-identifier">filename</span>, <span class="ruby-string">&quot;w&quot;</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">source</span> }
      <span class="ruby-identifier">copied</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">migration</span>
      <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_copy</span>].<span class="ruby-identifier">call</span>(<span class="ruby-identifier">scope</span>, <span class="ruby-identifier">migration</span>, <span class="ruby-identifier">old_path</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_copy</span>]
      <span class="ruby-identifier">destination_migrations</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">migration</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">copied</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- copy-source -->
          
        </div>

        

        
      </div><!-- copy-method -->

    
      <div id="method-i-down" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">down</span><span
            class="method-args">()</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="down-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 373</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">down</span>
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">delegate</span> = <span class="ruby-keyword">self</span>
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:down</span>)
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">down</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- down-source -->
          
        </div>

        

        
      </div><!-- down-method -->

    
      <div id="method-i-method_missing" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">method_missing</span><span
            class="method-args">(method, *arguments, &block)</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="method_missing-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 455</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">method</span>, *<span class="ruby-identifier">arguments</span>, &amp;<span class="ruby-identifier">block</span>)
  <span class="ruby-identifier">arg_list</span> = <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">map</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">inspect</span> } * <span class="ruby-string">', '</span>

  <span class="ruby-identifier">say_with_time</span> <span class="ruby-node">&quot;#{method}(#{arg_list})&quot;</span> <span class="ruby-keyword">do</span>
    <span class="ruby-keyword">unless</span> <span class="ruby-identifier">reverting?</span>
      <span class="ruby-keyword">unless</span> <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:execute</span>
        <span class="ruby-identifier">arguments</span>[<span class="ruby-value">0</span>] = <span class="ruby-constant">Migrator</span>.<span class="ruby-identifier">proper_table_name</span>(<span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">first</span>)
        <span class="ruby-identifier">arguments</span>[<span class="ruby-value">1</span>] = <span class="ruby-constant">Migrator</span>.<span class="ruby-identifier">proper_table_name</span>(<span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">second</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">method</span> <span class="ruby-operator">==</span> <span class="ruby-value">:rename_table</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">return</span> <span class="ruby-keyword">super</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">connection</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">method</span>)
    <span class="ruby-identifier">connection</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">method</span>, *<span class="ruby-identifier">arguments</span>, &amp;<span class="ruby-identifier">block</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- method_missing-source -->
          
        </div>

        

        
      </div><!-- method_missing-method -->

    
      <div id="method-i-migrate" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">migrate</span><span
            class="method-args">(direction)</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          <p>Execute this migration in the named direction</p>
          

          
          <div class="method-source-code" id="migrate-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 380</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">migrate</span>(<span class="ruby-identifier">direction</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">direction</span>)

  <span class="ruby-keyword">case</span> <span class="ruby-identifier">direction</span>
  <span class="ruby-keyword">when</span> <span class="ruby-value">:up</span>   <span class="ruby-keyword">then</span> <span class="ruby-identifier">announce</span> <span class="ruby-string">&quot;migrating&quot;</span>
  <span class="ruby-keyword">when</span> <span class="ruby-value">:down</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">announce</span> <span class="ruby-string">&quot;reverting&quot;</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-identifier">time</span>   = <span class="ruby-keyword">nil</span>
  <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection_pool</span>.<span class="ruby-identifier">with_connection</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">conn</span><span class="ruby-operator">|</span>
    <span class="ruby-ivar">@connection</span> = <span class="ruby-identifier">conn</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:change</span>)
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">direction</span> <span class="ruby-operator">==</span> <span class="ruby-value">:down</span>
        <span class="ruby-identifier">recorder</span> = <span class="ruby-constant">CommandRecorder</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@connection</span>)
        <span class="ruby-identifier">suppress_messages</span> <span class="ruby-keyword">do</span>
          <span class="ruby-ivar">@connection</span> = <span class="ruby-identifier">recorder</span>
          <span class="ruby-identifier">change</span>
        <span class="ruby-keyword">end</span>
        <span class="ruby-ivar">@connection</span> = <span class="ruby-identifier">conn</span>
        <span class="ruby-identifier">time</span> = <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">measure</span> {
          <span class="ruby-keyword">self</span>.<span class="ruby-identifier">revert</span> {
            <span class="ruby-identifier">recorder</span>.<span class="ruby-identifier">inverse</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">cmd</span>, <span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
              <span class="ruby-identifier">send</span>(<span class="ruby-identifier">cmd</span>, *<span class="ruby-identifier">args</span>)
            <span class="ruby-keyword">end</span>
          }
        }
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">time</span> = <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">measure</span> { <span class="ruby-identifier">change</span> }
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">time</span> = <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">measure</span> { <span class="ruby-identifier">send</span>(<span class="ruby-identifier">direction</span>) }
    <span class="ruby-keyword">end</span>
    <span class="ruby-ivar">@connection</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">case</span> <span class="ruby-identifier">direction</span>
  <span class="ruby-keyword">when</span> <span class="ruby-value">:up</span>   <span class="ruby-keyword">then</span> <span class="ruby-identifier">announce</span> <span class="ruby-string">&quot;migrated (%.4fs)&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">time</span>.<span class="ruby-identifier">real</span>; <span class="ruby-identifier">write</span>
  <span class="ruby-keyword">when</span> <span class="ruby-value">:down</span> <span class="ruby-keyword">then</span> <span class="ruby-identifier">announce</span> <span class="ruby-string">&quot;reverted (%.4fs)&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">time</span>.<span class="ruby-identifier">real</span>; <span class="ruby-identifier">write</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- migrate-source -->
          
        </div>

        

        
      </div><!-- migrate-method -->

    
      <div id="method-i-next_migration_number" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">next_migration_number</span><span
            class="method-args">(number)</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="next_migration_number-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 506</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">next_migration_number</span>(<span class="ruby-identifier">number</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">timestamped_migrations</span>
    [<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">utc</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-string">&quot;%Y%m%d%H%M%S&quot;</span>), <span class="ruby-string">&quot;%.14d&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">number</span>].<span class="ruby-identifier">max</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-string">&quot;%.3d&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">number</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- next_migration_number-source -->
          
        </div>

        

        
      </div><!-- next_migration_number-method -->

    
      <div id="method-i-revert" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">revert</span><span
            class="method-args">() { || ... }</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="revert-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 356</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">revert</span>
  <span class="ruby-ivar">@reverting</span> = <span class="ruby-keyword">true</span>
  <span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
  <span class="ruby-ivar">@reverting</span> = <span class="ruby-keyword">false</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- revert-source -->
          
        </div>

        

        
      </div><!-- revert-method -->

    
      <div id="method-i-reverting-3F" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">reverting?</span><span
            class="method-args">()</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="reverting-3F-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 363</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">reverting?</span>
  <span class="ruby-ivar">@reverting</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- reverting-3F-source -->
          
        </div>

        

        
      </div><!-- reverting-3F-method -->

    
      <div id="method-i-say" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">say</span><span
            class="method-args">(message, subitem=false)</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="say-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 431</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">say</span>(<span class="ruby-identifier">message</span>, <span class="ruby-identifier">subitem</span>=<span class="ruby-keyword">false</span>)
  <span class="ruby-identifier">write</span> <span class="ruby-node">&quot;#{subitem ? &quot;   -&gt;&quot; : &quot;--&quot;} #{message}&quot;</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- say-source -->
          
        </div>

        

        
      </div><!-- say-method -->

    
      <div id="method-i-say_with_time" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">say_with_time</span><span
            class="method-args">(message) { || ... }</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="say_with_time-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 435</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">say_with_time</span>(<span class="ruby-identifier">message</span>)
  <span class="ruby-identifier">say</span>(<span class="ruby-identifier">message</span>)
  <span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
  <span class="ruby-identifier">time</span> = <span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">measure</span> { <span class="ruby-identifier">result</span> = <span class="ruby-keyword">yield</span> }
  <span class="ruby-identifier">say</span> <span class="ruby-string">&quot;%.4fs&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">time</span>.<span class="ruby-identifier">real</span>, <span class="ruby-value">:subitem</span>
  <span class="ruby-identifier">say</span>(<span class="ruby-node">&quot;#{result} rows&quot;</span>, <span class="ruby-value">:subitem</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Integer</span>)
  <span class="ruby-identifier">result</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- say_with_time-source -->
          
        </div>

        

        
      </div><!-- say_with_time-method -->

    
      <div id="method-i-suppress_messages" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">suppress_messages</span><span
            class="method-args">() { || ... }</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="suppress_messages-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 444</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">suppress_messages</span>
  <span class="ruby-identifier">save</span>, <span class="ruby-keyword">self</span>.<span class="ruby-identifier">verbose</span> = <span class="ruby-identifier">verbose</span>, <span class="ruby-keyword">false</span>
  <span class="ruby-keyword">yield</span>
<span class="ruby-keyword">ensure</span>
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">verbose</span> = <span class="ruby-identifier">save</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- suppress_messages-source -->
          
        </div>

        

        
      </div><!-- suppress_messages-method -->

    
      <div id="method-i-up" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">up</span><span
            class="method-args">()</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="up-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 367</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">up</span>
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">delegate</span> = <span class="ruby-keyword">self</span>
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:up</span>)
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">up</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- up-source -->
          
        </div>

        

        
      </div><!-- up-method -->

    
      <div id="method-i-write" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">write</span><span
            class="method-args">(text="")</span>
          <span class="method-click-advice">click to toggle source</span>
        </div>
        

        <div class="method-description">
          
          
          

          
          <div class="method-source-code" id="write-source">
            <pre><span class="ruby-comment"># File /usr/local/lib/ruby/gems/1.9.1/gems/activerecord-3.2.7/lib/active_record/migration.rb, line 421</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">write</span>(<span class="ruby-identifier">text</span>=<span class="ruby-string">&quot;&quot;</span>)
  <span class="ruby-identifier">puts</span>(<span class="ruby-identifier">text</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">verbose</span>
<span class="ruby-keyword">end</span></pre>
          </div><!-- write-source -->
          
        </div>

        

        
      </div><!-- write-method -->

    
    </section><!-- public-instance-method-details -->
  
  </section><!-- 5Buntitled-5D -->

</div><!-- documentation -->


<footer id="validator-badges">
  <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
  <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
  <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
</footer>

